package com.demo.redis.config;

import java.util.HashSet;
import java.util.Set;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;

import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;

/**
 * 生成JedisCluster对象
 * 
 */
//@Configuration
public class JedisClusterConfig {

	/** redis集群节点 */
	@Value("${spring.redis.nodes}")
	private String nodes;
	/** 连接超时时间 */
	@Value("${spring.redis.timeout}")
	private int timeout;
	/** 重连次数 */
	@Value("${spring.redis.maxAttempts}")
	private int maxAttempts;

	/**
	 * 注意： 这里返回的JedisCluster是单例的，并且可以直接注入到其他类中去使用
	 */
	@Bean
	public JedisCluster getJedisCluster() {
		
		String[] serverArray = nodes.split(",");// 获取服务器数组(这里要相信自己的输入，所以没有考虑空指针问题)
		Set<HostAndPort> nodes = new HashSet<>();
		
		for (String ipPort : serverArray) {
			String[] ipPortPair = ipPort.split(":");
			nodes.add(new HostAndPort(ipPortPair[0].trim(), Integer.valueOf(ipPortPair[1].trim())));
		}
		return new JedisCluster(nodes, timeout, maxAttempts);
	}

}